home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / liboctave / CDiagMatrix.h < prev    next >
C/C++ Source or Header  |  1996-10-12  |  6KB  |  170 lines

  1. /*
  2.  
  3. Copyright (C) 1996 John W. Eaton
  4.  
  5. This file is part of Octave.
  6.  
  7. Octave is free software; you can redistribute it and/or modify it
  8. under the terms of the GNU General Public License as published by the
  9. Free Software Foundation; either version 2, or (at your option) any
  10. later version.
  11.  
  12. Octave is distributed in the hope that it will be useful, but WITHOUT
  13. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  15. for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with Octave; see the file COPYING.  If not, write to the Free
  19. Software Foundation, 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  
  21. */
  22.  
  23. #if !defined (octave_ComplexDiagMatrix_h)
  24. #define octave_ComplexDiagMatrix_h 1
  25.  
  26. #if defined (__GNUG__)
  27. #pragma interface
  28. #endif
  29.  
  30. #include "MDiagArray2.h"
  31.  
  32. #include "dRowVector.h"
  33. #include "CRowVector.h"
  34. #include "dColVector.h"
  35. #include "CColVector.h"
  36.  
  37. #include "mx-defs.h"
  38.  
  39. class ComplexDiagMatrix : public MDiagArray2<Complex>
  40. {
  41. public:
  42.  
  43.   ComplexDiagMatrix (void) : MDiagArray2<Complex> () { }
  44.   ComplexDiagMatrix (int r, int c) : MDiagArray2<Complex> (r, c) { }
  45.   ComplexDiagMatrix (int r, int c, const Complex& val)
  46.     : MDiagArray2<Complex> (r, c, val) { }
  47.   ComplexDiagMatrix (const RowVector& a)
  48.     : MDiagArray2<Complex> (ComplexRowVector (a)) { }
  49.   ComplexDiagMatrix (const ComplexRowVector& a) : MDiagArray2<Complex> (a) { }
  50.   ComplexDiagMatrix (const ColumnVector& a)
  51.     : MDiagArray2<Complex> (ComplexColumnVector (a)) { }
  52.   ComplexDiagMatrix (const ComplexColumnVector& a)
  53.     : MDiagArray2<Complex> (a) { }
  54.   ComplexDiagMatrix (const DiagMatrix& a);
  55.   ComplexDiagMatrix (const MDiagArray2<Complex>& a)
  56.     : MDiagArray2<Complex> (a) { }
  57.   ComplexDiagMatrix (const ComplexDiagMatrix& a) : MDiagArray2<Complex> (a) { }
  58.  
  59.   ComplexDiagMatrix& operator = (const ComplexDiagMatrix& a)
  60.     {
  61.       MDiagArray2<Complex>::operator = (a);
  62.       return *this;
  63.     }
  64.  
  65.   bool operator == (const ComplexDiagMatrix& a) const;
  66.   bool operator != (const ComplexDiagMatrix& a) const;
  67.  
  68.   ComplexDiagMatrix& fill (double val);
  69.   ComplexDiagMatrix& fill (const Complex& val);
  70.   ComplexDiagMatrix& fill (double val, int beg, int end);
  71.   ComplexDiagMatrix& fill (const Complex& val, int beg, int end);
  72.   ComplexDiagMatrix& fill (const ColumnVector& a);
  73.   ComplexDiagMatrix& fill (const ComplexColumnVector& a);
  74.   ComplexDiagMatrix& fill (const RowVector& a);
  75.   ComplexDiagMatrix& fill (const ComplexRowVector& a);
  76.   ComplexDiagMatrix& fill (const ColumnVector& a, int beg);
  77.   ComplexDiagMatrix& fill (const ComplexColumnVector& a, int beg);
  78.   ComplexDiagMatrix& fill (const RowVector& a, int beg);
  79.   ComplexDiagMatrix& fill (const ComplexRowVector& a, int beg);
  80.  
  81.   ComplexDiagMatrix hermitian (void) const;  // complex conjugate transpose
  82.   ComplexDiagMatrix transpose (void) const;
  83.  
  84.   friend ComplexDiagMatrix conj (const ComplexDiagMatrix& a);
  85.  
  86.   // resize is the destructive analog for this one
  87.  
  88.   ComplexMatrix extract (int r1, int c1, int r2, int c2) const;
  89.  
  90.   // extract row or column i
  91.  
  92.   ComplexRowVector row (int i) const;
  93.   ComplexRowVector row (char *s) const;
  94.  
  95.   ComplexColumnVector column (int i) const;
  96.   ComplexColumnVector column (char *s) const;
  97.  
  98.   ComplexDiagMatrix inverse (int& info) const;
  99.   ComplexDiagMatrix inverse (void) const;
  100.  
  101.   // diagonal matrix by diagonal matrix -> diagonal matrix operations
  102.  
  103.   ComplexDiagMatrix& operator += (const DiagMatrix& a);
  104.   ComplexDiagMatrix& operator -= (const DiagMatrix& a);
  105.  
  106.   ComplexDiagMatrix& operator += (const ComplexDiagMatrix& a);
  107.   ComplexDiagMatrix& operator -= (const ComplexDiagMatrix& a);
  108.  
  109.   // diagonal matrix by scalar -> diagonal matrix operations
  110.  
  111.   friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a, double s);
  112.   friend ComplexDiagMatrix operator / (const ComplexDiagMatrix& a, double s);
  113.  
  114.   friend ComplexDiagMatrix operator * (const DiagMatrix& a, const Complex& s);
  115.   friend ComplexDiagMatrix operator / (const DiagMatrix& a, const Complex& s);
  116.  
  117.   // scalar by diagonal matrix -> diagonal matrix operations
  118.  
  119.   friend ComplexDiagMatrix operator * (double s, const ComplexDiagMatrix& a);
  120.  
  121.   friend ComplexDiagMatrix operator * (const Complex& s, const DiagMatrix& a);
  122.  
  123.   // diagonal matrix by diagonal matrix -> diagonal matrix operations
  124.  
  125.   friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a,
  126.                        const ComplexDiagMatrix& b);
  127.  
  128.   friend ComplexDiagMatrix operator + (const ComplexDiagMatrix& a,
  129.                        const DiagMatrix& b);
  130.   friend ComplexDiagMatrix operator - (const ComplexDiagMatrix& a,
  131.                        const DiagMatrix& b);
  132.   friend ComplexDiagMatrix operator * (const ComplexDiagMatrix& a,
  133.                        const DiagMatrix& b);
  134.  
  135.   friend ComplexDiagMatrix operator + (const DiagMatrix& a,
  136.                        const ComplexDiagMatrix& b);
  137.   friend ComplexDiagMatrix operator - (const DiagMatrix& a,
  138.                        const ComplexDiagMatrix& b);
  139.   friend ComplexDiagMatrix operator * (const DiagMatrix& a,
  140.                        const ComplexDiagMatrix& b);
  141.  
  142.   friend ComplexDiagMatrix product (const ComplexDiagMatrix& a,
  143.                     const DiagMatrix& b); 
  144.  
  145.   friend ComplexDiagMatrix product (const DiagMatrix& a,
  146.                     const ComplexDiagMatrix& b);
  147.  
  148.   // other operations
  149.  
  150.   ComplexColumnVector diag (void) const;
  151.   ComplexColumnVector diag (int k) const;
  152.  
  153.   // i/o
  154.  
  155.   friend ostream& operator << (ostream& os, const ComplexDiagMatrix& a);
  156.  
  157. private:
  158.  
  159.   ComplexDiagMatrix (Complex *d, int nr, int nc)
  160.     : MDiagArray2<Complex> (d, nr, nc) { }
  161. };
  162.  
  163. #endif
  164.  
  165. /*
  166. ;;; Local Variables: ***
  167. ;;; mode: C++ ***
  168. ;;; End: ***
  169. */
  170.